/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package pap.pickapartner;

import java.util.ArrayList;


public abstract class Carona implements Comparable{

    private Horario horario;
    private GrupoCarona grupo;
    private Veiculo veiculoMotorista;
    protected Localizacao origem;
    protected Localizacao destino;

    public Carona(Horario horario, GrupoCarona grupo, Veiculo veiculoMotorista, Localizacao origem, Localizacao destino) {
        this.horario = horario;
        this.grupo = grupo;
        this.veiculoMotorista = veiculoMotorista;
        this.origem = origem;
        this.destino = destino;
    }

    public Localizacao getDestino() {
        return destino;
    }


    public GrupoCarona getGrupo() {
        return grupo;
    }

    public void setGrupo(GrupoCarona grupo) {
        this.grupo = grupo;
    }

    public Horario getHorario() {
        return horario;
    }

    public Localizacao getOrigem() {
        return origem;
    }

    public Veiculo getVeiculoMotorista() {
        return veiculoMotorista;
    }

    public void setVeiculoMotorista(Veiculo veiculoMotorista) {
        this.veiculoMotorista = veiculoMotorista;
    }
    
    public boolean executar(){
        ArrayList<Usuario> caroneiros = this.grupo.getCaroneiros();
        int pontosObtidos = caroneiros.size();
        this.grupo.getMotorista().adicionarPontos(pontosObtidos);
        for(int i=caroneiros.size()-1; i>=0; i--){
            caroneiros.get(i).removerPontos(1);
        }
        
        if(this.horario.recorrer()){
            this.grupo.permutar();
            return true;
        }
        
        return false;
    }
    
      public int compareTo(Object objeto){
          return this.getHorario().compareTo(((Carona)objeto).getHorario());
      }
    
    
    
}
